Coat a large skillet with oil and place it over medium heat. Add the onion, garlic, ginger and serrano pepper. Sauté until the onion is soft and translucen, about 5 minutes.
Add the beans and lime juice. Flip a few times to incorporate and cook for 2 minutes. Lightly mash about half of beans with a fork or potato masher. Add the coconut milk, broth, garam masala, coriander, cardamom and cayenne. Bring the mixture to a simmer and lower the heat. Allow to simmer over low heat, stirring occasionally, for 10 minutes, adding a bit of water if it becomes too thick.
Stir in the spinach and cook just until wilted, about 2 minutes. Remove from heat. Season with salt and pepper to taste.
Include the seeds from your serrano pepper for (a lot) more heat. For a milder version, leave them out.
Nutrition information does not include rice.